#pragma once
#include <Windows.h>
#include <iostream>
#include <unordered_map>
#include "../cs2 dumper/client_dll.hpp"


namespace CBasePlayerController_
{
    inline DWORD m_CommandContext = cs2_dumper::schemas::client_dll::CBasePlayerController::m_CommandContext;
    inline DWORD m_nInButtonsWhichAreToggles = cs2_dumper::schemas::client_dll::CBasePlayerController::m_nInButtonsWhichAreToggles;
    inline DWORD m_nTickBase = cs2_dumper::schemas::client_dll::CBasePlayerController::m_nTickBase;
    inline DWORD m_hPawn = cs2_dumper::schemas::client_dll::CBasePlayerController::m_hPawn;
    inline DWORD m_bKnownTeamMismatch = cs2_dumper::schemas::client_dll::CBasePlayerController::m_bKnownTeamMismatch;
    inline DWORD m_hPredictedPawn = cs2_dumper::schemas::client_dll::CBasePlayerController::m_hPredictedPawn;
    inline DWORD m_nSplitScreenSlot = cs2_dumper::schemas::client_dll::CBasePlayerController::m_nSplitScreenSlot;
    inline DWORD m_hSplitOwner = cs2_dumper::schemas::client_dll::CBasePlayerController::m_hSplitOwner;
    inline DWORD m_hSplitScreenPlayers = cs2_dumper::schemas::client_dll::CBasePlayerController::m_hSplitScreenPlayers;
    inline DWORD m_bIsHLTV = cs2_dumper::schemas::client_dll::CBasePlayerController::m_bIsHLTV;
    inline DWORD m_iConnected = cs2_dumper::schemas::client_dll::CBasePlayerController::m_iConnected;
    inline DWORD m_iszPlayerName = cs2_dumper::schemas::client_dll::CBasePlayerController::m_iszPlayerName;
    inline DWORD m_steamID = cs2_dumper::schemas::client_dll::CBasePlayerController::m_steamID;
    inline DWORD m_bIsLocalPlayerController = cs2_dumper::schemas::client_dll::CBasePlayerController::m_bIsLocalPlayerController;
    inline DWORD m_bNoClipEnabled = cs2_dumper::schemas::client_dll::CBasePlayerController::m_bNoClipEnabled;
    inline DWORD m_iDesiredFOV = cs2_dumper::schemas::client_dll::CBasePlayerController::m_iDesiredFOV;
}

namespace CCSPlayerController_InGameMoneyServices_
{
    inline DWORD m_iAccount = cs2_dumper::schemas::client_dll::CCSPlayerController_InGameMoneyServices::m_iAccount;
    inline DWORD m_iStartAccount = cs2_dumper::schemas::client_dll::CCSPlayerController_InGameMoneyServices::m_iStartAccount;
    inline DWORD m_iTotalCashSpent = cs2_dumper::schemas::client_dll::CCSPlayerController_InGameMoneyServices::m_iTotalCashSpent;
    inline DWORD m_iCashSpentThisRound = cs2_dumper::schemas::client_dll::CCSPlayerController_InGameMoneyServices::m_iCashSpentThisRound;
}

namespace CCSPlayerController_
{
    inline DWORD m_pInGameMoneyServices = cs2_dumper::schemas::client_dll::CCSPlayerController::m_pInGameMoneyServices;
    inline DWORD m_pInventoryServices = cs2_dumper::schemas::client_dll::CCSPlayerController::m_pInventoryServices;
    inline DWORD m_pActionTrackingServices = cs2_dumper::schemas::client_dll::CCSPlayerController::m_pActionTrackingServices;
    inline DWORD m_pDamageServices = cs2_dumper::schemas::client_dll::CCSPlayerController::m_pDamageServices;
    inline DWORD m_iPing = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iPing;
    inline DWORD m_bHasCommunicationAbuseMute = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bHasCommunicationAbuseMute;
    inline DWORD m_uiCommunicationMuteFlags = cs2_dumper::schemas::client_dll::CCSPlayerController::m_uiCommunicationMuteFlags;
    inline DWORD m_szCrosshairCodes = cs2_dumper::schemas::client_dll::CCSPlayerController::m_szCrosshairCodes;
    inline DWORD m_iPendingTeamNum = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iPendingTeamNum;
    inline DWORD m_flForceTeamTime = cs2_dumper::schemas::client_dll::CCSPlayerController::m_flForceTeamTime;
    inline DWORD m_iCompTeammateColor = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iCompTeammateColor;
    inline DWORD m_bEverPlayedOnTeam = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bEverPlayedOnTeam;
    inline DWORD m_flPreviousForceJoinTeamTime = cs2_dumper::schemas::client_dll::CCSPlayerController::m_flPreviousForceJoinTeamTime;
    inline DWORD m_szClan = cs2_dumper::schemas::client_dll::CCSPlayerController::m_szClan;
    inline DWORD m_sSanitizedPlayerName = cs2_dumper::schemas::client_dll::CCSPlayerController::m_sSanitizedPlayerName;
    inline DWORD m_iCoachingTeam = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iCoachingTeam;
    inline DWORD m_nPlayerDominated = cs2_dumper::schemas::client_dll::CCSPlayerController::m_nPlayerDominated;
    inline DWORD m_nPlayerDominatingMe = cs2_dumper::schemas::client_dll::CCSPlayerController::m_nPlayerDominatingMe;
    inline DWORD m_iCompetitiveRanking = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iCompetitiveRanking;
    inline DWORD m_iCompetitiveWins = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iCompetitiveWins;
    inline DWORD m_iCompetitiveRankType = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iCompetitiveRankType;
    inline DWORD m_iCompetitiveRankingPredicted_Win = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iCompetitiveRankingPredicted_Win;
    inline DWORD m_iCompetitiveRankingPredicted_Loss = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iCompetitiveRankingPredicted_Loss;
    inline DWORD m_iCompetitiveRankingPredicted_Tie = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iCompetitiveRankingPredicted_Tie;
    inline DWORD m_nEndMatchNextMapVote = cs2_dumper::schemas::client_dll::CCSPlayerController::m_nEndMatchNextMapVote;
    inline DWORD m_unActiveQuestId = cs2_dumper::schemas::client_dll::CCSPlayerController::m_unActiveQuestId;
    inline DWORD m_rtActiveMissionPeriod = cs2_dumper::schemas::client_dll::CCSPlayerController::m_rtActiveMissionPeriod;
    inline DWORD m_nQuestProgressReason = cs2_dumper::schemas::client_dll::CCSPlayerController::m_nQuestProgressReason;
    inline DWORD m_unPlayerTvControlFlags = cs2_dumper::schemas::client_dll::CCSPlayerController::m_unPlayerTvControlFlags;
    inline DWORD m_iDraftIndex = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iDraftIndex;
    inline DWORD m_msQueuedModeDisconnectionTimestamp = cs2_dumper::schemas::client_dll::CCSPlayerController::m_msQueuedModeDisconnectionTimestamp;
    inline DWORD m_uiAbandonRecordedReason = cs2_dumper::schemas::client_dll::CCSPlayerController::m_uiAbandonRecordedReason;
    inline DWORD m_eNetworkDisconnectionReason = cs2_dumper::schemas::client_dll::CCSPlayerController::m_eNetworkDisconnectionReason;
    inline DWORD m_bCannotBeKicked = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bCannotBeKicked;
    inline DWORD m_bEverFullyConnected = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bEverFullyConnected;
    inline DWORD m_bAbandonAllowsSurrender = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bAbandonAllowsSurrender;
    inline DWORD m_bAbandonOffersInstantSurrender = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bAbandonOffersInstantSurrender;
    inline DWORD m_bDisconnection1MinWarningPrinted = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bDisconnection1MinWarningPrinted;
    inline DWORD m_bScoreReported = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bScoreReported;
    inline DWORD m_nDisconnectionTick = cs2_dumper::schemas::client_dll::CCSPlayerController::m_nDisconnectionTick;
    inline DWORD m_bControllingBot = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bControllingBot;
    inline DWORD m_bHasControlledBotThisRound = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bHasControlledBotThisRound;
    inline DWORD m_bHasBeenControlledByPlayerThisRound = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bHasBeenControlledByPlayerThisRound;
    inline DWORD m_nBotsControlledThisRound = cs2_dumper::schemas::client_dll::CCSPlayerController::m_nBotsControlledThisRound;
    inline DWORD m_bCanControlObservedBot = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bCanControlObservedBot;
    inline DWORD m_hPlayerPawn = cs2_dumper::schemas::client_dll::CCSPlayerController::m_hPlayerPawn;
    inline DWORD m_hObserverPawn = cs2_dumper::schemas::client_dll::CCSPlayerController::m_hObserverPawn;
    inline DWORD m_bPawnIsAlive = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bPawnIsAlive;
    inline DWORD m_iPawnHealth = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iPawnHealth;
    inline DWORD m_iPawnArmor = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iPawnArmor;
    inline DWORD m_bPawnHasDefuser = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bPawnHasDefuser;
    inline DWORD m_bPawnHasHelmet = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bPawnHasHelmet;
    inline DWORD m_nPawnCharacterDefIndex = cs2_dumper::schemas::client_dll::CCSPlayerController::m_nPawnCharacterDefIndex;
    inline DWORD m_iPawnLifetimeStart = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iPawnLifetimeStart;
    inline DWORD m_iPawnLifetimeEnd = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iPawnLifetimeEnd;
    inline DWORD m_iPawnBotDifficulty = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iPawnBotDifficulty;
    inline DWORD m_hOriginalControllerOfCurrentPawn = cs2_dumper::schemas::client_dll::CCSPlayerController::m_hOriginalControllerOfCurrentPawn;
    inline DWORD m_iScore = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iScore;
    inline DWORD m_recentKillQueue = cs2_dumper::schemas::client_dll::CCSPlayerController::m_recentKillQueue;
    inline DWORD m_nFirstKill = cs2_dumper::schemas::client_dll::CCSPlayerController::m_nFirstKill;
    inline DWORD m_nKillCount = cs2_dumper::schemas::client_dll::CCSPlayerController::m_nKillCount;
    inline DWORD m_bMvpNoMusic = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bMvpNoMusic;
    inline DWORD m_eMvpReason = cs2_dumper::schemas::client_dll::CCSPlayerController::m_eMvpReason;
    inline DWORD m_iMusicKitID = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iMusicKitID;
    inline DWORD m_iMusicKitMVPs = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iMusicKitMVPs;
    inline DWORD m_iMVPs = cs2_dumper::schemas::client_dll::CCSPlayerController::m_iMVPs;
    inline DWORD m_bIsPlayerNameDirty = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bIsPlayerNameDirty;
    inline DWORD m_bFireBulletsSeedSynchronized = cs2_dumper::schemas::client_dll::CCSPlayerController::m_bFireBulletsSeedSynchronized;
}
static const std::unordered_map<std::string, std::ptrdiff_t> CBasePlayerController_OffsetMap = {
    {"m_CommandContext", CBasePlayerController_::m_CommandContext},
    {"m_nInButtonsWhichAreToggles", CBasePlayerController_::m_nInButtonsWhichAreToggles},
    {"m_nTickBase", CBasePlayerController_::m_nTickBase},
    {"m_hPawn", CBasePlayerController_::m_hPawn},
    {"m_bKnownTeamMismatch", CBasePlayerController_::m_bKnownTeamMismatch},
    {"m_hPredictedPawn", CBasePlayerController_::m_hPredictedPawn},
    {"m_nSplitScreenSlot", CBasePlayerController_::m_nSplitScreenSlot},
    {"m_hSplitOwner", CBasePlayerController_::m_hSplitOwner},
    {"m_hSplitScreenPlayers", CBasePlayerController_::m_hSplitScreenPlayers},
    {"m_bIsHLTV", CBasePlayerController_::m_bIsHLTV},
    {"m_iConnected", CBasePlayerController_::m_iConnected},
    {"m_iszPlayerName", CBasePlayerController_::m_iszPlayerName},
    {"m_steamID", CBasePlayerController_::m_steamID},
    {"m_bIsLocalPlayerController", CBasePlayerController_::m_bIsLocalPlayerController},
    {"m_bNoClipEnabled", CBasePlayerController_::m_bNoClipEnabled},
    {"m_iDesiredFOV", CBasePlayerController_::m_iDesiredFOV}
};

static const std::unordered_map<std::string, std::ptrdiff_t> CCSPlayerController_InGameMoneyServices_OffsetMap = {
    {"m_iAccount", CCSPlayerController_InGameMoneyServices_::m_iAccount},
    {"m_iStartAccount", CCSPlayerController_InGameMoneyServices_::m_iStartAccount},
    {"m_iTotalCashSpent", CCSPlayerController_InGameMoneyServices_::m_iTotalCashSpent},
    {"m_iCashSpentThisRound", CCSPlayerController_InGameMoneyServices_::m_iCashSpentThisRound},
};

static const std::unordered_map<std::string, std::ptrdiff_t> CCSPlayerController_OffsetMap = {
    {"m_pInGameMoneyServices", CCSPlayerController_::m_pInGameMoneyServices},
    {"m_pInventoryServices", CCSPlayerController_::m_pInventoryServices},
    {"m_pActionTrackingServices", CCSPlayerController_::m_pActionTrackingServices},
    {"m_pDamageServices", CCSPlayerController_::m_pDamageServices},
    {"m_iPing", CCSPlayerController_::m_iPing},
    {"m_bHasCommunicationAbuseMute", CCSPlayerController_::m_bHasCommunicationAbuseMute},
    {"m_uiCommunicationMuteFlags", CCSPlayerController_::m_uiCommunicationMuteFlags},
    {"m_szCrosshairCodes", CCSPlayerController_::m_szCrosshairCodes},
    {"m_iPendingTeamNum", CCSPlayerController_::m_iPendingTeamNum},
    {"m_flForceTeamTime", CCSPlayerController_::m_flForceTeamTime},
    {"m_iCompTeammateColor", CCSPlayerController_::m_iCompTeammateColor},
    {"m_bEverPlayedOnTeam", CCSPlayerController_::m_bEverPlayedOnTeam},
    {"m_flPreviousForceJoinTeamTime", CCSPlayerController_::m_flPreviousForceJoinTeamTime},
    {"m_szClan", CCSPlayerController_::m_szClan},
    {"m_sSanitizedPlayerName", CCSPlayerController_::m_sSanitizedPlayerName},
    {"m_iCoachingTeam", CCSPlayerController_::m_iCoachingTeam},
    {"m_nPlayerDominated", CCSPlayerController_::m_nPlayerDominated},
    {"m_nPlayerDominatingMe", CCSPlayerController_::m_nPlayerDominatingMe},
    {"m_iCompetitiveRanking", CCSPlayerController_::m_iCompetitiveRanking},
    {"m_iCompetitiveWins", CCSPlayerController_::m_iCompetitiveWins},
    {"m_iCompetitiveRankType", CCSPlayerController_::m_iCompetitiveRankType},
    {"m_iCompetitiveRankingPredicted_Win", CCSPlayerController_::m_iCompetitiveRankingPredicted_Win},
    {"m_iCompetitiveRankingPredicted_Loss", CCSPlayerController_::m_iCompetitiveRankingPredicted_Loss},
    {"m_iCompetitiveRankingPredicted_Tie", CCSPlayerController_::m_iCompetitiveRankingPredicted_Tie},
    {"m_nEndMatchNextMapVote", CCSPlayerController_::m_nEndMatchNextMapVote},
    {"m_unActiveQuestId", CCSPlayerController_::m_unActiveQuestId},
    {"m_rtActiveMissionPeriod", CCSPlayerController_::m_rtActiveMissionPeriod},
    {"m_nQuestProgressReason", CCSPlayerController_::m_nQuestProgressReason},
    {"m_unPlayerTvControlFlags", CCSPlayerController_::m_unPlayerTvControlFlags},
    {"m_iDraftIndex", CCSPlayerController_::m_iDraftIndex},
    {"m_msQueuedModeDisconnectionTimestamp", CCSPlayerController_::m_msQueuedModeDisconnectionTimestamp},
    {"m_uiAbandonRecordedReason", CCSPlayerController_::m_uiAbandonRecordedReason},
    {"m_eNetworkDisconnectionReason", CCSPlayerController_::m_eNetworkDisconnectionReason},
    {"m_bCannotBeKicked", CCSPlayerController_::m_bCannotBeKicked},
    {"m_bEverFullyConnected", CCSPlayerController_::m_bEverFullyConnected},
    {"m_bAbandonAllowsSurrender", CCSPlayerController_::m_bAbandonAllowsSurrender},
    {"m_bAbandonOffersInstantSurrender", CCSPlayerController_::m_bAbandonOffersInstantSurrender},
    {"m_bDisconnection1MinWarningPrinted", CCSPlayerController_::m_bDisconnection1MinWarningPrinted},
    {"m_bScoreReported", CCSPlayerController_::m_bScoreReported},
    {"m_nDisconnectionTick", CCSPlayerController_::m_nDisconnectionTick},
    {"m_bControllingBot", CCSPlayerController_::m_bControllingBot},
    {"m_bHasControlledBotThisRound", CCSPlayerController_::m_bHasControlledBotThisRound},
    {"m_bHasBeenControlledByPlayerThisRound", CCSPlayerController_::m_bHasBeenControlledByPlayerThisRound},
    {"m_nBotsControlledThisRound", CCSPlayerController_::m_nBotsControlledThisRound},
    {"m_bCanControlObservedBot", CCSPlayerController_::m_bCanControlObservedBot},
    {"m_hPlayerPawn", CCSPlayerController_::m_hPlayerPawn},
    {"m_hObserverPawn", CCSPlayerController_::m_hObserverPawn},
    {"m_bPawnIsAlive", CCSPlayerController_::m_bPawnIsAlive},
    {"m_iPawnHealth", CCSPlayerController_::m_iPawnHealth},
    {"m_iPawnArmor", CCSPlayerController_::m_iPawnArmor},
    {"m_bPawnHasDefuser", CCSPlayerController_::m_bPawnHasDefuser},
    {"m_bPawnHasHelmet", CCSPlayerController_::m_bPawnHasHelmet},
    {"m_nPawnCharacterDefIndex", CCSPlayerController_::m_nPawnCharacterDefIndex},
    {"m_iPawnLifetimeStart", CCSPlayerController_::m_iPawnLifetimeStart},
    {"m_iPawnLifetimeEnd", CCSPlayerController_::m_iPawnLifetimeEnd},
    {"m_iPawnBotDifficulty", CCSPlayerController_::m_iPawnBotDifficulty},
    {"m_hOriginalControllerOfCurrentPawn", CCSPlayerController_::m_hOriginalControllerOfCurrentPawn},
    {"m_iScore", CCSPlayerController_::m_iScore},
    {"m_recentKillQueue", CCSPlayerController_::m_recentKillQueue},
    {"m_nFirstKill", CCSPlayerController_::m_nFirstKill},
    {"m_nKillCount", CCSPlayerController_::m_nKillCount},
    {"m_bMvpNoMusic", CCSPlayerController_::m_bMvpNoMusic},
    {"m_eMvpReason", CCSPlayerController_::m_eMvpReason},
    {"m_iMusicKitID", CCSPlayerController_::m_iMusicKitID},
    {"m_iMusicKitMVPs", CCSPlayerController_::m_iMusicKitMVPs},
    {"m_iMVPs", CCSPlayerController_::m_iMVPs},
    {"m_bIsPlayerNameDirty", CCSPlayerController_::m_bIsPlayerNameDirty},
    {"m_bFireBulletsSeedSynchronized", CCSPlayerController_::m_bFireBulletsSeedSynchronized}
};